package com.fintech.third.service.shzx;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Date;
import java.util.Map;

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.fintech.common.enums.RespStatus;
import com.fintech.common.service.BaseServiceImpl;
import com.fintech.common.util.ApiResponse;
import com.fintech.datagroud.service.DGShzxService;
import com.fintech.third.constant.ThirdMethodConstants;
import com.fintech.third.constant.ThirdProductChannelConstant;
import com.fintech.third.model.ThirdProperties;
import com.fintech.third.model.shzx.CreditReport;
import com.fintech.third.model.shzx.ExcelInfo;
import com.fintech.third.utils.SerialNumCreater;
import com.fintech.third.utils.ThirdPropertiesInitUtil;
import com.fintech.third.utils.ThirdSystemUtil;
import com.fintech.third.utils.XMLUtil;
import com.fintech.third.utils.shzx.ShzxUtil;
import com.fintech.third.utils.shzx.WriteDataUtil;
import com.fintech.third.utils.shzx.ZipUtils;
import com.marvels.common.utils.MarvelsLogUtil;

import net.sf.json.JSONObject;

@Service("Shzx")
public class ShzxImpl extends BaseServiceImpl implements ShzxService {
	// public static String batchCreditWebServiceURI
	// ="https://vpn.shanghai-cis.com.cn/+CSCO+00756767633A2F2F6A6A6A2E617370662E70627A++/webservice/batchcredit?wsdl";//此参数的获取请参考《JAVA开发人员必读.doc》
	// public static String msgSubmitWebServiceURI
	// ="https://vpn.shanghai-cis.com.cn/+CSCO+00756767633A2F2F6A6A6A2E617370662E70627A++/webservice/msgsubmit?wsdl";//此参数的获取请参考《JAVA开发人员必读.doc》
	// public static String queryCreditWebServiceURI
	// ="https://vpn.shanghai-cis.com.cn/+CSCO+00756767633A2F2F6A6A6A2E617370662E70627A++/webservice/querycredit?wsdl";
	// //此参数的获取请参考《JAVA开发人员必读.doc》
	static Cookie[] cookies = {};
	final static MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();

	final static HttpClient httpClient = new HttpClient(connectionManager);
	
	@Autowired
	private DGShzxService dGShzxService;
	public void loginVPN() {
		ThirdProperties thirdProperties=ThirdPropertiesInitUtil.getThirdProperties();
		// STEP1:
		System.setProperty("javax.net.ssl.trustStore", ThirdSystemUtil.class.getResource(thirdProperties.getShzx_certificate_url()).getPath());
		HttpClientParams httparams = new HttpClientParams();
		httparams.setSoTimeout(30000);
		httpClient.setParams(httparams);
		httpClient.getHostConfiguration().setHost("vpn.shanghai-cis.com.cn", 80);
		PostMethod login = new PostMethod(thirdProperties.getShzx_step1URI());
		login.addRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		try {
			httpClient.executeMethod(login);
		} catch (HttpException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		cookies = httpClient.getState().getCookies();
		System.out.println("==========Cookies============");
		int i = 0;
		for (Cookie c : cookies) {
			System.out.println(++i + ":   " + c);
		}
		httpClient.getState().addCookies(cookies);
		login.releaseConnection();

		// STEP2:
		PostMethod login2 = new PostMethod(thirdProperties.getShzx_step2URI());
		login2.addRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		login2.addRequestHeader("Refer", thirdProperties.getShzx_step1URI());
		login2.addRequestHeader("Accept",
				"image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*");

		NameValuePair tgroup = new NameValuePair("tgroup", "");
		NameValuePair next = new NameValuePair("next", "");
		NameValuePair tgcookieset = new NameValuePair("tgcookieset", "");
		NameValuePair Login = new NameValuePair("Login", "登录");
		NameValuePair Email = new NameValuePair("username", thirdProperties.getShzx_username());
		NameValuePair password1 = new NameValuePair("password", thirdProperties.getShzx_password());
		// NameValuePair code = new NameValuePair( "code"
		// ,"????");//有时候需要验证码，暂时未解决

		NameValuePair[] data = { tgroup, next, tgcookieset, Login, Email, password1 };
		login2.setRequestBody(data);

		try {
			httpClient.executeMethod(login2);
		} catch (HttpException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		cookies = httpClient.getState().getCookies();
		System.out.println("==========Cookies============");
		int j = 0;
		for (Cookie c : cookies) {
			System.out.println(++j + ":   " + c);
		}
		httpClient.getState().addCookies(cookies);
		login2.releaseConnection();

	}

	public String messageUpload(ExcelInfo excelInfo) {
		loginVPN();
		MarvelsLogUtil.getInstance().info("=================>>>上传内容:" + com.alibaba.fastjson.JSONObject.toJSONString(excelInfo));
		String fileStr = WriteDataUtil.writeExcel(excelInfo);
		ThirdProperties thirdProperties=ThirdPropertiesInitUtil.getThirdProperties();
		String xmlStr="";
		MarvelsLogUtil.getInstance().info("=================>>>上传文件地址:" + fileStr);
		File zipFileData = ZipUtils.zipFile(new File(fileStr));
		PostMethod postMethodAn=null;
		File encryptZipFileData = ZipUtils.encryptZipFile(zipFileData, thirdProperties.getShzx_zippassword());
		MarvelsLogUtil.getInstance().info("====================上海资信报文上传 Shzx_zippassword : " + thirdProperties.getShzx_zippassword());
		String responseResult = "";
		try {
			postMethodAn = new PostMethod(thirdProperties.getShzx_msgSubmitWebServiceURI());

			postMethodAn.addRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			String reuqestStr;

			reuqestStr = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://webservice.datasubmit.p2p.sino.com/\">"
					+ "<soapenv:Header/>" + "<soapenv:Body>" + "<web:uploadMessageFile>" + "<orgcode>" +thirdProperties.getShzx_orgcode()
					+ "</orgcode>" + "<secret>" + thirdProperties.getShzx_ssecret() + "</secret><filename>" + encryptZipFileData.getName()
					+ "</filename>" + "<filebuff>"
					+ Base64.encodeBase64String(FileUtils.readFileToByteArray(encryptZipFileData)) + "</filebuff>"
					+ "</web:uploadMessageFile>" + "</soapenv:Body>" + "</soapenv:Envelope>";
			MarvelsLogUtil.getInstance().info("====================上海资信报文上传请求报文:" + reuqestStr);
			postMethodAn.setRequestBody(reuqestStr);
			MarvelsLogUtil.getInstance().info("====================上海资信报文上传接口请求开始");
			httpClient.executeMethod(postMethodAn);
			responseResult = postMethodAn.getResponseBodyAsString();
			MarvelsLogUtil.getInstance().info("====================上传报文返回结果报文:" + responseResult);
			postMethodAn.releaseConnection();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			postMethodAn.releaseConnection();
		}
		xmlStr = ShzxUtil.splitSoapToReturn(responseResult);
		MarvelsLogUtil.getInstance().info("====================>>>>上传报文返回解析结果:" + ShzxUtil.convertSoapToXML(responseResult));
		return JSONObject.fromObject(xmlStr).get("success").toString();

	}
	
	@Override
	public String personDataDeleteUpload(ExcelInfo excelInfo) {
		loginVPN();
		MarvelsLogUtil.getInstance().info("=================>>>删除上传内容:" + com.alibaba.fastjson.JSONObject.toJSONString(excelInfo));
		String fileStr = WriteDataUtil.writeDeleteExcel(excelInfo);
		ThirdProperties thirdProperties=ThirdPropertiesInitUtil.getThirdProperties();
		String xmlStr="";
		MarvelsLogUtil.getInstance().info("=================>>>删除上传文件地址:" + fileStr);
		File zipFileData = ZipUtils.zipFile(new File(fileStr));
		PostMethod postMethodAn=null;
		File encryptZipFileData = ZipUtils.encryptZipFile(zipFileData, thirdProperties.getShzx_zippassword());
		MarvelsLogUtil.getInstance().info("====================删除上海资信报文上传 Shzx_zippassword : " + thirdProperties.getShzx_zippassword());
		String responseResult = "";
		try {
			postMethodAn = new PostMethod(thirdProperties.getShzx_msgSubmitWebServiceURI());

			postMethodAn.addRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			String reuqestStr;

			reuqestStr = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://webservice.datasubmit.p2p.sino.com/\">"
					+ "<soapenv:Header/>" + "<soapenv:Body>" + "<web:uploadMessageFile>" + "<orgcode>" +thirdProperties.getShzx_orgcode()
					+ "</orgcode>" + "<secret>" + thirdProperties.getShzx_ssecret() + "</secret><filename>" + encryptZipFileData.getName()
					+ "</filename>" + "<filebuff>"
					+ Base64.encodeBase64String(FileUtils.readFileToByteArray(encryptZipFileData)) + "</filebuff>"
					+ "</web:uploadMessageFile>" + "</soapenv:Body>" + "</soapenv:Envelope>";
			MarvelsLogUtil.getInstance().info("====================删除上海资信报文上传请求报文:" + reuqestStr);
			postMethodAn.setRequestBody(reuqestStr);
			MarvelsLogUtil.getInstance().info("====================删除上海资信报文上传接口请求开始");
			httpClient.executeMethod(postMethodAn);
			responseResult = postMethodAn.getResponseBodyAsString();
			MarvelsLogUtil.getInstance().info("====================删除上传报文返回结果报文:" + responseResult);
			postMethodAn.releaseConnection();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			postMethodAn.releaseConnection();
		}
		xmlStr = ShzxUtil.splitSoapToReturn(responseResult);
		MarvelsLogUtil.getInstance().info("====================>>>>删除上传报文返回解析结果:" + ShzxUtil.convertSoapToXML(responseResult));
		return JSONObject.fromObject(xmlStr).get("success").toString();
	}
	
	
	public String queryBatchCreditFile(String fileName) {
		PostMethod postMethod = null;
		String result4 = "";
		ThirdProperties thirdProperties=ThirdPropertiesInitUtil.getThirdProperties();
		try {
			// 例子1：信用报告查询文件处理状态查询接口
			postMethod = new PostMethod(thirdProperties.getShzx_batchCreditWebServiceURI());
			postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");
			postMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			String reuqest = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://webservice.datasubmit.p2p.sino.com/\">"
					+ "<soapenv:Header/>" + "<soapenv:Body>" + "<web:queryBatchCreditFile>" + "<orgcode>" + thirdProperties.getShzx_orgcode()
					+ "</orgcode>" + "<secret>" + thirdProperties.getShzx_ssecret() + "</secret><filename>" + fileName + "</filename>"
					+ "</web:queryBatchCreditFile>" + "</soapenv:Body>" + "</soapenv:Envelope>";
			postMethod.setRequestBody(reuqest);
			httpClient.executeMethod(postMethod);
			result4 = postMethod.getResponseBodyAsString();
			System.out.println("++++++++++++result4++++++++++++" + result4);
			postMethod.releaseConnection();
		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			postMethod.releaseConnection();
		}
		return result4;
	}

	
	
	public void obtainFeedBackFile() {
		GetMethod login6 = new GetMethod(
				"https://vpn.shanghai-cis.com.cn/+CSCO+00756767633A2F2F6A6A6A2E617370662E70627A++/download/?url=/p2p/msg/feedback/2015-07-14/Q10152900H4J00/Q10152900H4J002015070061/Q10152900H4J0020150700611.txt");
		FileOutputStream output = null;

		try {
			login6.setRequestHeader("fileName", "Q10152900H4J0020150700611.txt");

			int k = httpClient.executeMethod(login6);
			System.out.println("The response value of token:" + httpClient.getParams().getParameter("token"));

			File storeFile = new File("C:\\123456.txt");
			output = new FileOutputStream(storeFile);

			// 得到网络资源的字节数组,并写入文件
			output.write(login6.getResponseBody());
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			login6.releaseConnection();
			try {
				if (output != null) {
					output.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

	public ApiResponse<CreditReport> queryCredit(Map<String, String> map) {
		loginVPN();
		String result = "";
		String reuqestStr = "";
		String xmlStr = "";
		String loanId=map.get("loanId");
		String certno=map.get("certno");//被查询人证件号码
		String name=map.get("name");//被查询人姓名
		String serialNum = SerialNumCreater.creater("SHZX", loanId);
		ThirdProperties thirdProperties=ThirdPropertiesInitUtil.getThirdProperties();
		String method = ThirdMethodConstants.SH0001;
		long time1 = System.currentTimeMillis();
		Date sTime=new Date();
		ApiResponse<CreditReport> apiResponse=new ApiResponse<CreditReport>();
		CreditReport creditReport = new CreditReport();
		PostMethod post=null;
		try {
			post = new PostMethod(thirdProperties.getShzx_batchCreditWebServiceURI());
			post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");
			post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			reuqestStr = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://webservice.creditreport.p2p.sino.com/\">"
					+ "<soapenv:Header/>" + "<soapenv:Body>" + "<web:queryCredit>" + "<orgcode>" + thirdProperties.getShzx_orgcode()
					+ "</orgcode>" + "<secret>" + thirdProperties.getShzx_ssecret() + "</secret>" + "<plate>" + "1" + "</plate>" + "<certtype>"
					+ "0" + "</certtype>" + "<certno>" + certno + "</certno>" + "<name>" + name
					+ "</name>" + "<reason>" + "02" + "</reason>" + "<createtype>1</createtype>" + "</web:queryCredit>"
					+ "</soapenv:Body>" + "</soapenv:Envelope>";
			post.setRequestBody(reuqestStr);
			MarvelsLogUtil.getInstance().info("====================>>>>上海资信信用报告单笔查询接口请求报文:" + reuqestStr);
			httpClient.executeMethod(post);
			result = post.getResponseBodyAsString();
			long time2 = System.currentTimeMillis();
			MarvelsLogUtil.getInstance().info("====================>>>>上海资信信用报告单笔查询接口返回报文:" + reuqestStr+",Result====++++++++++++" + result + "++++++++++++" + (time2 - time1));
		} catch (Exception ex) {
			ex.printStackTrace();
			MarvelsLogUtil.getInstance().info("================信用报告单笔查询响应"+ex.getMessage());
			apiResponse.setCode(RespStatus.REQ_ERROR.getCode());
			apiResponse.setMsg("上海资信个人信用报告单笔查询异常");
			return apiResponse;
		} finally {
			post.releaseConnection();
		}
	
		if (StringUtils.isNotEmpty(result)) {
			xmlStr = ShzxUtil.convertSoapToXML(result);
			xmlStr="<?xml version=\"1.0\" encoding=\"GBK\"?><网络金融版个人信用报告><信用报告头><查询原因>贷款审批</查询原因><报告编号>571555376994657670778859</报告编号><报告时间>2017.09.26 21:59:30</报告时间></信用报告头><个人身份信息><姓名>丁怀亮</姓名><证件类型>身份证</证件类型><证件号码>41018119640423803X</证件号码><性别>男性</性别><出生日期>1964.04.23</出生日期><婚姻状况><婚姻明细>已婚</婚姻明细><信息获取日期>2017.09.13</信息获取日期></婚姻状况><最高学历><学历明细>大学专科和专科学校</学历明细><信息获取日期>2017.09.13</信息获取日期></最高学历><职称><职称明细>未知</职称明细><信息获取日期>2017.07.17</信息获取日期></职称><住宅电话><住宅电话明细>1378350XXXX</住宅电话明细><信息获取日期>2017.09.13</信息获取日期></住宅电话><手机号码><手机号码明细>1378350XXXX</手机号码明细><信息获取日期>2017.09.13</信息获取日期></手机号码><电子邮箱><电子邮箱明细></电子邮箱明细><信息获取日期>2017.09.13</信息获取日期></电子邮箱><地址><地址序号>01.</地址序号><地址明细>和平路城建公寓2号楼2单元201室</地址明细><信息获取日期>2017.07.17</信息获取日期></地址><地址><地址序号>02.</地址序号><地址明细>巩义市和平路城建公寓2号楼2-201</地址明细><信息获取日期>2016.11.10</信息获取日期></地址><工作单位><工作序号>01.</工作序号><工作明细>巩义市昊元水处理器材有限公司</工作明细><职业>未知</职业><信息获取日期>2017.07.17</信息获取日期></工作单位><工作单位><工作序号>02.</工作序号><工作明细>M</工作明细><职业>未知</职业><信息获取日期>2016.11.10</信息获取日期></工作单位><配偶姓名>宋书红</配偶姓名><配偶证件类型></配偶证件类型><配偶证件号码></配偶证件号码><配偶性别>女性</配偶性别><配偶出生日期></配偶出生日期><配偶工作单位><配偶工作单位明细></配偶工作单位明细><信息获取日期>2017.09.13</信息获取日期></配偶工作单位><配偶联系电话><配偶联系电话明细>1383808XXXX</配偶联系电话明细><信息获取日期>2017.09.13</信息获取日期></配偶联系电话><第一联系人信息><联系人姓名>宋书红</联系人姓名><联系人关系>其他</联系人关系><联系电话>1383808XXXX</联系电话><信息获取日期>2017.09.13</信息获取日期></第一联系人信息><第一联系人信息><联系人姓名>宋红利</联系人姓名><联系人关系>兄弟姐妹</联系人关系><联系电话>1352665XXXX</联系电话><信息获取日期>2016.11.10</信息获取日期></第一联系人信息><第二联系人信息><联系人姓名>丁进超</联系人姓名><联系人关系>其他</联系人关系><联系电话>1393858XXXX</联系电话><信息获取日期>2017.09.13</信息获取日期></第二联系人信息><第二联系人信息><联系人姓名>张建营</联系人姓名><联系人关系>朋友</联系人关系><联系电话>1338402XXXX</联系电话><信息获取日期>2016.11.10</信息获取日期></第二联系人信息></个人身份信息><贷款申请信息></贷款申请信息><贷款交易信息><信息概要><贷款笔数>2</贷款笔数><首贷日>2016.10.28</首贷日><最大授信额度>200000</最大授信额度><贷款总额>375400</贷款总额><贷款余额>318682</贷款余额><协定月还款>13091</协定月还款><当前逾期总额>0</当前逾期总额><最高逾期金额>0</最高逾期金额><最高逾期期数>0</最高逾期期数></信息概要><贷款><贷款项目>01.其他</贷款项目><机构名称>富爵（深圳）金融服务有限公司</机构名称><授信额度>200000</授信额度><担保方式>其他</担保方式><开户日期>2017.06.16</开户日期><币种>人民币</币种><发生地>广东省深圳市</发生地><共享授信额度>0</共享授信额度><最大负债额>181412</最大负债额><还款频率>月</还款频率><期末贷款余额>181412</期末贷款余额><剩余还款月数>32</剩余还款月数><本月应还款日期>2017.09.16</本月应还款日期><本月应还款金额>6739</本月应还款金额><帐户状态>正常</帐户状态><实际还款日期>2017.09.16</实际还款日期><实际还款金额>6739</实际还款金额><当前逾期总额>0</当前逾期总额><当前逾期期数>0</当前逾期期数><累计逾期期数>0</累计逾期期数><最高逾期期数>0</最高逾期期数><二十四月内各月还款状况>////////////////////NNNN</二十四月内各月还款状况><逾期31-60天未归还贷款本金>0</逾期31-60天未归还贷款本金><逾期61-90天未归还贷款本金>0</逾期61-90天未归还贷款本金><逾期91-180天未归还贷款本金>0</逾期91-180天未归还贷款本金><逾期180天以上未归还贷款本金>0</逾期180天以上未归还贷款本金><信息获取日期>2017.09.18</信息获取日期></贷款><贷款><贷款项目>02.个人经营性贷款</贷款项目><机构名称>P2P机构</机构名称><授信额度>175400</授信额度><担保方式>信用、免担保</担保方式><开户日期>2016.10.28</开户日期><币种>人民币</币种><发生地>上海市市辖区</发生地><共享授信额度>175400</共享授信额度><最大负债额>175400</最大负债额><还款频率>月</还款频率><期末贷款余额>137270</期末贷款余额><剩余还款月数>27</剩余还款月数><本月应还款日期>2017.07.29</本月应还款日期><本月应还款金额>6352</本月应还款金额><帐户状态>正常</帐户状态><实际还款日期>2017.07.29</实际还款日期><实际还款金额>6352</实际还款金额><当前逾期总额>0</当前逾期总额><当前逾期期数>0</当前逾期期数><累计逾期期数>0</累计逾期期数><最高逾期期数>0</最高逾期期数><二十四月内各月还款状况>//////////////*NNNNNNNNN</二十四月内各月还款状况><逾期31-60天未归还贷款本金>0</逾期31-60天未归还贷款本金><逾期61-90天未归还贷款本金>0</逾期61-90天未归还贷款本金><逾期91-180天未归还贷款本金>0</逾期91-180天未归还贷款本金><逾期180天以上未归还贷款本金>0</逾期180天以上未归还贷款本金><信息获取日期>2017.08.29</信息获取日期></贷款></贷款交易信息><为他人担保信息></为他人担保信息><特殊交易信息></特殊交易信息><查询信息><查询记录><查询者类型>01.P2P机构</查询者类型><查询原因>贷款审批</查询原因><查询日期>2017.09.26 21:53:33</查询日期></查询记录><查询记录><查询者类型>02.P2P机构</查询者类型><查询原因>贷款审批</查询原因><查询日期>2017.09.11 11:16:18</查询日期></查询记录><查询记录><查询者类型>03.P2P机构</查询者类型><查询原因>贷款审批</查询原因><查询日期>2017.09.11 11:16:08</查询日期></查询记录></查询信息><个人声明信息></个人声明信息><资信提示信息><资信提示><项目>01.最近六个月内贷款申请信息</项目><提示内容>申请笔数 = 1</提示内容><提示时间>2017.09.26</提示时间></资信提示></资信提示信息></网络金融版个人信用报告>";
			creditReport = XMLUtil.convertToObject(xmlStr, CreditReport.class);
			
			try {
				dGShzxService.creditReport(creditReport, serialNum,loanId,certno);
			} catch (Exception e) {
				e.printStackTrace();
				MarvelsLogUtil.getInstance().error("上海资信个人信用报告单笔查询数据落地失败：" + e.getMessage());
				apiResponse.setCode(RespStatus.DATABASE_ERROR.getCode());
				apiResponse.setMsg(RespStatus.DATABASE_ERROR.getMsg());
			}
			apiResponse.setCode(RespStatus.SUCCESS.getCode());
			apiResponse.setMsg("上海资信个人信用报告单笔查询");
			apiResponse.setData(creditReport);
		} else {
			apiResponse.setCode(RespStatus.NODATA.getCode());
			apiResponse.setMsg("上海资信个人信用报告单笔查询无数据");
		}
		Date eTime = new Date();
		if(apiResponse.getCode() != RespStatus.SUCCESS.getCode()){
			saveErrorLog(serialNum, Integer.toString(apiResponse.getCode()), apiResponse.getMsg(), xmlStr, xmlStr, "third",method,sTime,eTime);
		}
		saveLog(serialNum, Integer.toString(apiResponse.getCode()), apiResponse.getMsg(), xmlStr, xmlStr, "third",method,sTime,eTime,"","");
		
		String  resultLog="";
		if(apiResponse.getCode()==RespStatus.SUCCESS.getCode()){
			resultLog="1";
		}else if(apiResponse.getCode()==RespStatus.NODATA.getCode()){
			resultLog="0";
		}else{
			resultLog="-1";
		}
		saveCallCountLog(loanId,ThirdMethodConstants.PY0001, resultLog, ThirdProductChannelConstant.PENYUAN.getCode(), "个人信用查询");
		return apiResponse;
	}

	public String uploadBatchCreditFile(File file) {
		ThirdProperties thirdProperties=ThirdPropertiesInitUtil.getThirdProperties();
	//	String string="01 \u0000  测试借款人1(txt) \u0000 0 \u0000  110114199103059313 \u0000 02 \u0000 1 \r\n \u0000 01 \u0000 测试借款人1(txt)\u0000 0 \u0000 110114199103059313 \u0000 02 \u0000 0";
		String string="01测试借款人1(txt)\u0000110114199103059313\r\n01测试借款人1(txt)\u0000110114199103059313";
		String urlStr=WriteDataUtil.writeTxt(string);
		file=new File(urlStr);
		String responseResult = "";
		try {
			PostMethod postMethodAn = new PostMethod(thirdProperties.getShzx_batchCreditWebServiceURI());

			postMethodAn.addRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			String reuqestStr;

			reuqestStr = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://webservice.creditreport.p2p.sino.com/\">"
					+ "<soapenv:Header/>" + "<soapenv:Body>" + "<web:uploadBatchCreditFile>" + "<orgcode>" + thirdProperties.getShzx_orgcode()
					+ "</orgcode>" + "<secret>" + thirdProperties.getShzx_ssecret() + "</secret><filename>" + file.getName() + "</filename>"
					+ "<filebuff>" + Base64.encodeBase64String(FileUtils.readFileToByteArray(file)) + "</filebuff>"
					+ "</web:uploadBatchCreditFile>" + "</soapenv:Body>" + "</soapenv:Envelope>";
			postMethodAn.setRequestBody(reuqestStr);
			httpClient.executeMethod(postMethodAn);
			responseResult = postMethodAn.getResponseBodyAsString();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return ShzxUtil.convertSoapToXML(responseResult);
	}

	
	public void downLoadFromUrl(String urlStr, String fileName, String savePath) {
		URL url = null;
		try {
			url = new URL(urlStr);
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			// 设置超时间为3秒
			conn.setConnectTimeout(3 * 1000);
			// 防止屏蔽程序抓取而返回403错误
			conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

			// 得到输入流
			InputStream inputStream = conn.getInputStream();
			// 获取自己数组
			byte[] getData = ShzxUtil.readInputStream(inputStream);

			// 文件保存位置
			File saveDir = new File(savePath);
			if (!saveDir.exists()) {
				saveDir.mkdir();
			}
			File file = new File(saveDir + File.separator + fileName);
			FileOutputStream fos = new FileOutputStream(file);
			fos.write(getData);
			if (fos != null) {
				fos.close();
			}
			if (inputStream != null) {
				inputStream.close();
			}
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		System.out.println("info:" + url + " download success");

	}

}
